www.gusucode.com > VC++ 编写软件自动升级服务源代码 > VC++ 编写软件自动升级服务源代码/gusucode/updater_src0.8.1.6/Language.cpp
/******************************************************************** created: 2005/03/02 created: 2:3:2005 13:29 filename: Language.cpp file path: Updater file base: Language file ext: cpp author: Geert van Horrik purpose: *********************************************************************/ //********************************************************************* // INCLUDES //********************************************************************* #include "stdafx.h" #include "Updater.h" #include "Language.h" //********************************************************************* // INITIALISATION //********************************************************************* std::auto_ptr<CLanguage> CLanguage::sm_inst; //********************************************************************* // CONSTRUCTOR & DESTRUCTOR //********************************************************************* CLanguage::CLanguage() { // Set default language name & translator m_sLanguageName = _T(""); m_sLanguageTranslator = _T(""); // Init available languages InitLanguagesAvailable(); // We didn't parse the file (yet) m_bParsed = false; } //********************************************************************* // PUBLIC FUNCTIONS //********************************************************************* CLanguage * CLanguage::Instance() { if(sm_inst.get() == 0) sm_inst = auto_ptr<CLanguage>(new CLanguage); return sm_inst.get(); /* FOLLOWING CODE WORKS ONLY IN VC7 if(sm_inst.get() == 0) sm_inst.reset(new CLanguage); return sm_inst.get(); */ } //===================================================================== bool CLanguage::LoadLanguage(LANGID language) { // Declare variables CPath * pPath = CPath::Instance(); CString sTemp; // Automatic load right language for (int i = 0; i < m_iLanguageCount; i++) { // Check all sublanguages for (int j = 0; j < m_arrLanguages[i].iLanguageCount; j++) { // Check if we found the right language if (m_arrLanguages[i].arrLanguages[j] == language) { // We found it! sTemp.Format(_T("%s\\lng\\%s.xml"), pPath->GetPathUpdater(), m_arrLanguages[i].sXML); LoadLanguage(sTemp, m_arrLanguages[i].sXML); return true; } } } // Nothing found, set default values m_sLanguageName = _T("English (default)"); m_sLanguageTranslator = UPDATER_DEVELOPER; // If we get here, not local language is found return false; } //===================================================================== bool CLanguage::LoadLanguage(CString sXmlLocation, CString sLanguageName, bool bShowErrors /* = true */) { // Declare variables CString sError, sTemp; // If we already loaded a language, release it first ReleaseLanguage(); // Check if the xml we want to load exists if (!PathFileExists(sXmlLocation)) { m_sLanguageName = _T("English (default)"); return false; } // Did we parse the XML file yet? if (!m_bParsed) { // Now we parsed m_bParsed = true; // Load XML File m_oLanguageXml.SetDoc(XML_to_CString(sXmlLocation)); } // Retrieve language information if (!ReadLanguageInfo()) { // Error return false; } // Set language if (m_sLanguageName == _T("")) { m_sLanguageName = sLanguageName; } // Check version CFunctions * pFunctions = CFunctions::Instance(); // In debug, the EXACT version must be found, in release, a future version is also allowed #ifdef _DEBUG if (pFunctions->CompareVersions(m_sLanguageVersion, VERSION_LANGUAGE) != COMPAREVERSION_EQUAL) #else if (pFunctions->CompareVersions(m_sLanguageVersion, VERSION_LANGUAGE) == COMPAREVERSION_FIRSTSMALLER) #endif { // Set up error message sTemp = _T("You are using a wrong version (%s) of the language file!\n"); sTemp += _T("You should use version %s! Updater will now use default language (English)"); sError.Format(sTemp, m_sLanguageVersion, VERSION_LANGUAGE); if (bShowErrors) { // Show error message (in english) AfxMessageBox(sError, MB_ICONERROR | MB_OK); m_sLanguageName = _T("english"); } return false; } // We succeeded return true; } //===================================================================== void CLanguage::ReleaseLanguage() { // Clear all language data m_sLanguageName = _T(""); m_sLanguageTranslator = _T(""); m_sLanguageVersion = _T(""); // We have no language parsed m_bParsed = false; // Empty the xml doc m_oLanguageXml.SetDoc(_T("")); } //===================================================================== CString CLanguage::GetString(UINT ResourceNumber) { // Declare variables CString sResult, sBuffer; // First try to read from XML if (sResult.IsEmpty()) sResult = ReadFromXml(ResourceNumber); // If nothing works, read from default string table if (sResult.IsEmpty()) sResult.LoadString(ResourceNumber); return sResult; } //===================================================================== CString CLanguage::GetLanguageName() { // Return value return m_sLanguageName; } //===================================================================== CString CLanguage::GetLanguageTranslator() { // Return value return m_sLanguageTranslator; } //===================================================================== CString CLanguage::GetLanguageVersion() { // Return value return m_sLanguageVersion; } //********************************************************************* // PRIVATE FUNCTIONS //********************************************************************* bool CLanguage::ReadLanguageInfo() { // Try to find main element if (!m_oLanguageXml.FindElem(_T("UPDATERLANGUAGE"))) { // We were not able to load the language return false; } // Jump into element m_oLanguageXml.IntoElem(); // Try to find info part if (!m_oLanguageXml.FindElem(_T("INFO"))) { // We were not able to load the language return false; } // Jump into element m_oLanguageXml.IntoElem(); // Try to find language name if (!m_oLanguageXml.FindElem(_T("LANGUAGE"))) { // We were not able to load the language return false; } m_sLanguageName = m_oLanguageXml.GetData(); // Reset pos m_oLanguageXml.ResetMainPos(); // Try to find language version if (!m_oLanguageXml.FindElem(_T("VERSION"))) { // We were not able to load the language return false; } m_sLanguageVersion = m_oLanguageXml.GetData(); // Try to find translator name if (!m_oLanguageXml.FindElem(_T("TRANSLATOR"))) { // We were not able to load the language return false; } m_sLanguageTranslator = m_oLanguageXml.GetData(); // Step out of this element m_oLanguageXml.OutOfElem(); // Reset pos m_oLanguageXml.ResetMainPos(); // Find real data if (m_oLanguageXml.FindElem(_T("DATA"))) { // Jump into element m_oLanguageXml.IntoElem(); // We succeeded return true; } // If we get here, function is not successfull return false; } //===================================================================== CString CLanguage::ReadFromXml(UINT ResourceNumber) { // Declare variables CString sResult = _T(""), sLangNameLower, sIdUpper, sIdToFind; // Check out which id to find sIdToFind = GetStringConstant(ResourceNumber); // Check if we have a valid id if (sIdToFind == _T("")) { // Return empty string so default string table is used return _T(""); } // Try to find right string id if (m_oLanguageXml.FindElem(sIdToFind)) { // Get result sResult = m_oLanguageXml.GetData(); } // Reset pointer m_oLanguageXml.ResetMainPos(); // Replace special characters sResult.Replace(_T("\\n"), _T("\n")); // Return result return sResult; } //===================================================================== CString CLanguage::XML_to_CString(CString sFilename) { // Declare variables CString sText, sNotes; CFile file; int iFileLength; unsigned char * pBuffer; // Open XML file if (!file.Open(sFilename, CFile::modeRead | CFile::shareDenyNone)) return _T(""); // Get file length iFileLength = (int)file.GetLength(); // Allocate buffer for binary file data pBuffer = new unsigned char[iFileLength + 2]; // Read file iFileLength = file.Read(pBuffer, iFileLength); // Close file file.Close(); // Add \0 to string pBuffer[iFileLength] = _T('\0'); pBuffer[iFileLength + 1] = _T('\0'); // in case 2-byte encoded // Windows Unicode file is detected if starts with FEFF if ((pBuffer[0] == 0xff) && (pBuffer[1] == 0xfe)) { // Contains byte order mark, so assume wide char content // non _UNICODE builds should perform UCS-2 (wide char) to UTF-8 conversion here sText = (LPCWSTR)(&pBuffer[2]); } else { // _UNICODE builds should perform UTF-8 to UCS-2 (wide char) conversion here sText = (LPCSTR)pBuffer; } // Release memory delete [] pBuffer; // If it is too short, assume it got truncated due to non-text content if (sText.GetLength() < iFileLength / 2 - 20) { return _T(""); } // Return string return sText; } //===================================================================== void CLanguage::InitLanguagesAvailable() { // Set language count to zero m_iLanguageCount = 0; // Add czech m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0405; // Czech m_arrLanguages[m_iLanguageCount++].sXML = _T("czech"); // Add danish m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0406; // Danish m_arrLanguages[m_iLanguageCount++].sXML = _T("danish"); // Add dutch m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0413; // Dutch (standard) m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0813; // Belgian (flemish) m_arrLanguages[m_iLanguageCount++].sXML = _T("dutch"); // Add finnish m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x040b; // Finnish m_arrLanguages[m_iLanguageCount++].sXML = _T("finnish"); // Add french m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x040c; // French (standard) m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x080c; // Belgian m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0c0c; // Canadian m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x100c; // Swiss m_arrLanguages[m_iLanguageCount++].sXML = _T("french"); // Add german m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0407; // German (standard) m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0807; // Swiss m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0c07; // Austrian m_arrLanguages[m_iLanguageCount++].sXML = _T("german"); // Add greek m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0408; // Greek m_arrLanguages[m_iLanguageCount++].sXML = _T("greek"); // Add hungarian m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x040e; // Hungarian m_arrLanguages[m_iLanguageCount++].sXML = _T("hungarian"); // Add icelandic m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x040f; // Icelandic m_arrLanguages[m_iLanguageCount++].sXML = _T("icelandic"); // Add italian m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0410; // Italian (standard) m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0810; // Swiss m_arrLanguages[m_iLanguageCount++].sXML = _T("italian"); // Add norwegian m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0414; // Norwegian (bokmal) m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0814; // Norwegian (nynorsk) m_arrLanguages[m_iLanguageCount++].sXML = _T("norwegian"); // Add polish m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0415; // Polish m_arrLanguages[m_iLanguageCount++].sXML = _T("polish"); // Add portuguese brazil m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0416; // Portuguese (Brazilian) m_arrLanguages[m_iLanguageCount++].sXML = _T("portuguese"); // Add russian m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0419; // Russian m_arrLanguages[m_iLanguageCount++].sXML = _T("russian"); // Add slovak m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x041b; // Slovak m_arrLanguages[m_iLanguageCount++].sXML = _T("slovak"); // Add spanish m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x040a; // Spanish (Standard/Traditional) m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x080a; // Mexican m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x0c0a; // Spanish (Modern) m_arrLanguages[m_iLanguageCount++].sXML = _T("spanish"); // Add swedish m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x041D; // Swedish m_arrLanguages[m_iLanguageCount++].sXML = _T("swedish"); // Add turkish m_arrLanguages[m_iLanguageCount].iLanguageCount = 0; m_arrLanguages[m_iLanguageCount].arrLanguages[m_arrLanguages[m_iLanguageCount].iLanguageCount++] = 0x041f; // Turkish m_arrLanguages[m_iLanguageCount++].sXML = _T("turkish"); } //===================================================================== CString CLanguage::GetStringConstant(UINT nResourceNumber) { // Check what string should be returned switch (nResourceNumber) { case IDS_GENERAL_OK: return _T("IDS_GENERAL_OK"); case IDS_GENERAL_CANCEL: return _T("IDS_GENERAL_CANCEL"); case IDS_GENERAL_YES: return _T("IDS_GENERAL_YES"); case IDS_GENERAL_NO: return _T("IDS_GENERAL_NO"); case IDS_GENERAL_NEXT: return _T("IDS_GENERAL_NEXT"); case IDS_GENERAL_FINISH: return _T("IDS_GENERAL_FINISH"); case IDS_GENERAL_TITLE: return _T("IDS_GENERAL_TITLE"); case IDS_QUESTION_CLOSE: return _T("IDS_QUESTION_CLOSE"); case IDS_QUESTION_CLOSEAPPLICATION: return _T("IDS_QUESTION_CLOSEAPPLICATION"); case IDS_QUESTION_DELETEFILE: return _T("IDS_QUESTION_DELETEFILE"); case IDS_QUESTIONTITLE_SURE: return _T("IDS_QUESTIONTITLE_SURE"); case IDS_SILENT_CHECKVERSION: return _T("IDS_SILENT_CHECKVERSION"); case IDS_SILENT_DOWNLOAD: return _T("IDS_SILENT_DOWNLOAD"); case IDS_SILENT_INSTALL: return _T("IDS_SILENT_INSTALL"); case IDS_SILENT_WELCOME: return _T("IDS_SILENT_WELCOME"); case IDS_SILENT_NOTIFICATION: return _T("IDS_SILENT_NOTIFICATION"); case IDS_SILENT_FINISH: return _T("IDS_SILENT_FINISH"); case IDS_SILENT_ERROR: return _T("IDS_SILENT_ERROR"); case IDS_SILENT_ROLLBACK: return _T("IDS_SILENT_ROLLBACK"); case IDS_ERROR_UNKNOWN: return _T("IDS_ERROR_UNKNOWN"); case IDS_ERROR_NOCONNECTION: return _T("IDS_ERROR_NOCONNECTION"); case IDS_ERROR_SERVER: return _T("IDS_ERROR_SERVER"); case IDS_ERROR_NODISKSPACE: return _T("IDS_ERROR_NODISKSPACE"); case IDS_ERROR_FILENOTFOUND: return _T("IDS_ERROR_FILENOTFOUND"); case IDS_ERROR_COPYFILE: return _T("IDS_ERROR_COPYFILE"); case IDS_ERROR_DELETEFILE: return _T("IDS_ERROR_DELETEFILE"); case IDS_ERROR_RUNFILE: return _T("IDS_ERROR_RUNFILE"); case IDS_ERROR_CLOSEAPP: return _T("IDS_ERROR_CLOSEAPP"); case IDS_ERROR_FILECORRUPT: return _T("IDS_ERROR_FILECORRUPT"); case IDS_ERROR_NONEWVERSION: return _T("IDS_ERROR_NONEWVERSION"); case IDS_ERROR_WRITEFILE: return _T("IDS_ERROR_WRITEFILE"); case IDS_FULL_WELCOME_EXPLANATION: return _T("IDS_FULL_WELCOME_EXPLANATION"); case IDS_FULL_WELCOME_TITLE: return _T("IDS_FULL_WELCOME_TITLE"); case IDS_FULL_CHECKVERSION_TITLE: return _T("IDS_FULL_CHECKVERSION_TITLE"); case IDS_FULL_DOWNLOAD_TITLE: return _T("IDS_FULL_DOWNLOAD_TITLE"); case IDS_FULL_INSTALL_TITLE: return _T("IDS_FULL_INSTALL_TITLE"); case IDS_FULL_FINISH_TITLE: return _T("IDS_FULL_FINISH_TITLE"); case IDS_FULL_ROLLBACK_TITLE: return _T("IDS_FULL_ROLLBACK_TITLE"); case IDS_FULL_CHECKVERSION_EXPLANATION: return _T("IDS_FULL_CHECKVERSION_EXPLANATION"); case IDS_FULL_FILEPROGRESS: return _T("IDS_FULL_FILEPROGRESS"); case IDS_FULL_TOTALPROGRESS: return _T("IDS_FULL_TOTALPROGRESS"); case IDS_FULL_FINISH_EXPLANATION: return _T("IDS_FULL_FINISH_EXPLANATION"); case IDS_FULL_DOWNLOAD_EXPLANATION: return _T("IDS_FULL_DOWNLOAD_EXPLANATION"); case IDS_FULL_INSTALL_EXPLANATION: return _T("IDS_FULL_INSTALL_EXPLANATION"); case IDS_FULL_CHECKVERSION_FEATURES: return _T("IDS_FULL_CHECKVERSION_FEATURES"); case IDS_FULL_ROLLBACK_EXPLANATION: return _T("IDS_FULL_ROLLBACK_EXPLANATION"); case IDS_ACTION_COPY: return _T("IDS_ACTION_COPY"); case IDS_ACTION_DELETE: return _T("IDS_ACTION_DELETE"); case IDS_ACTION_RUN: return _T("IDS_ACTION_RUN"); case IDS_ACTION_REGISTRY: return _T("IDS_ACTION_REGISTRY"); case IDS_ACTION_INI: return _T("IDS_ACTION_INI"); case IDS_STATUS_CONNECTINGTOSERVER: return _T("IDS_STATUS_CONNECTINGTOSERVER"); case IDS_STATUS_NONEWVERSION: return _T("IDS_STATUS_NONEWVERSION"); case IDS_STATUS_NEWVERSION: return _T("IDS_STATUS_NEWVERSION"); case IDS_STATUS_INITIALIZING: return _T("IDS_STATUS_INITIALIZING"); case IDS_ERROR_UNZIPFILE: return _T("IDS_ERROR_UNZIPFILE"); case IDS_ACTION_UNZIP: return _T("IDS_ACTION_UNZIP"); case IDS_ACTION_BACKUP: return _T("IDS_ACTION_BACKUP"); case IDS_ABOUT_TITLE: return _T("IDS_ABOUT_TITLE"); case IDS_ABOUT_UPDATERVERSION: return _T("IDS_ABOUT_UPDATERVERSION"); case IDS_ABOUT_DEVELOPEDBY: return _T("IDS_ABOUT_DEVELOPEDBY"); case IDS_ABOUT_WEBSITE: return _T("IDS_ABOUT_WEBSITE"); case IDS_ABOUT_LANGUAGEVERSION: return _T("IDS_ABOUT_LANGUAGEVERSION"); case IDS_ABOUT_TRANSLATEDBY: return _T("IDS_ABOUT_TRANSLATEDBY"); case IDS_ABOUT_LANGUAGEUSED: return _T("IDS_ABOUT_LANGUAGEUSED"); case IDS_ABOUT_SPECIALTHANKS: return _T("IDS_ABOUT_SPECIALTHANKS"); case IDS_ABOUT_THANKS_NAME: return _T("IDS_ABOUT_THANKS_NAME"); case IDS_ABOUT_THANKS_REASON: return _T("IDS_ABOUT_THANKS_REASON"); case IDS_FULL_CHECKVERSION_SUBTITLE: return _T("IDS_FULL_CHECKVERSION_SUBTITLE"); case IDS_FULL_DOWNLOAD_SUBTITLE: return _T("IDS_FULL_DOWNLOAD_SUBTITLE"); case IDS_FULL_INSTALL_SUBTITLE: return _T("IDS_FULL_INSTALL_SUBTITLE"); case IDS_FULL_FINISH_SUBTITLE: return _T("IDS_FULL_FINISH_SUBTITLE"); case IDS_FULL_ROLLBACK_SUBTITLE: return _T("IDS_FULL_ROLLBACK_SUBTITLE"); case IDS_FULL_SELECTUPDATE_EXPLANATION: return _T("IDS_FULL_SELECTUPDATE_EXPLANATION"); case IDS_FULL_SELECTUPDATE_TITLE: return _T("IDS_FULL_SELECTUPDATE_TITLE"); case IDS_FULL_SELECTUPDATE_SUBTITLE: return _T("IDS_FULL_SELECTUPDATE_SUBTITLE"); case IDS_FULL_LICENSE_TITLE: return _T("IDS_FULL_LICENSE_TITLE"); case IDS_FULL_LICENSE_SUBTITLE: return _T("IDS_FULL_LICENSE_SUBTITLE"); case IDS_FULL_LICENSE_AGREE: return _T("IDS_FULL_LICENSE_AGREE"); case IDS_FULL_LICENSE_NOTAGREE: return _T("IDS_FULL_LICENSE_NOTAGREE"); case IDS_AUTHENTICATION_EXPLANATION: return _T("IDS_AUTHENTICATION_EXPLANATION"); case IDS_AUTHENTICATION_USERNAME: return _T("IDS_AUTHENTICATION_USERNAME"); case IDS_AUTHENTICATION_PASSWORD: return _T("IDS_AUTHENTICATION_PASSWORD"); case IDS_AUTHENTICATION_TITLE: return _T("IDS_AUTHENTICATION_TITLE"); case IDS_FULL_HTMLMESSAGE_TITLE: return _T("IDS_FULL_HTMLMESSAGE_TITLE"); case IDS_FULL_HTMLMESSAGE_SUBTITLE: return _T("IDS_FULL_HTMLMESSAGE_SUBTITLE"); case IDS_FULL_SELECTUPDATE_MOREINFO: return _T("IDS_FULL_SELECTUPDATE_MOREINFO"); case IDS_CONFIRMATION_STOPUPDATING_TITLE: return _T("IDS_CONFIRMATION_STOPUPDATING_TITLE"); case IDS_CONFIRMATION_STOPUPDATING_EXPLANATION: return _T("IDS_CONFIRMATION_STOPUPDATING_EXPLANATION"); case IDS_CONFIRMATION_DELETEFILE_TITLE: return _T("IDS_CONFIRMATION_DELETEFILE_TITLE"); case IDS_CONFIRMATION_DELETEFILE_EXPLANATION: return _T("IDS_CONFIRMATION_DELETEFILE_EXPLANATION"); case IDS_CONFIRMATION_CLOSEAPPLICATION_TITLE: return _T("IDS_CONFIRMATION_CLOSEAPPLICATION_TITLE"); case IDS_CONFIRMATION_CLOSEAPPLICATION_EXPLANATION: return _T("IDS_CONFIRMATION_CLOSEAPPLICATION_EXPLANATION"); case IDS_CONFIRMATION_TITLE: return _T("IDS_CONFIRMATION_TITLE"); case IDS_ERROR_TITLE: return _T("IDS_ERROR_TITLE"); case IDS_ERROR_MORE: return _T("IDS_ERROR_MORE"); case IDS_ERROR_UNKNOWN_TITLE: return _T("IDS_ERROR_UNKNOWN_TITLE"); case IDS_ERROR_UNKNOWN_EXPLANATION: return _T("IDS_ERROR_UNKNOWN_EXPLANATION"); case IDS_ERROR_NOCONNECTION_TITLE: return _T("IDS_ERROR_NOCONNECTION_TITLE"); case IDS_ERROR_NOCONNECTION_EXPLANATION: return _T("IDS_ERROR_NOCONNECTION_EXPLANATION"); case IDS_ERROR_NOCONNECTION_MORE: return _T("IDS_ERROR_NOCONNECTION_MORE"); case IDS_ERROR_SERVER_TITLE: return _T("IDS_ERROR_SERVER_TITLE"); case IDS_ERROR_SERVER_EXPLANATION: return _T("IDS_ERROR_SERVER_EXPLANATION"); case IDS_ERROR_SERVER_MORE: return _T("IDS_ERROR_SERVER_MORE"); case IDS_ERROR_NODISKSPACE_TITLE: return _T("IDS_ERROR_NODISKSPACE_TITLE"); case IDS_ERROR_NODISKSPACE_EXPLANATION: return _T("IDS_ERROR_NODISKSPACE_EXPLANATION"); case IDS_ERROR_NODISKSPACE_MORE: return _T("IDS_ERROR_NODISKSPACE_MORE"); case IDS_ERROR_FILENOTFOUND_TITLE: return _T("IDS_ERROR_FILENOTFOUND_TITLE"); case IDS_ERROR_FILENOTFOUND_EXPLANATION: return _T("IDS_ERROR_FILENOTFOUND_EXPLANATION"); case IDS_ERROR_FILENOTFOUND_MORE: return _T("IDS_ERROR_FILENOTFOUND_MORE"); case IDS_ERROR_COPYFILE_TITLE: return _T("IDS_ERROR_COPYFILE_TITLE"); case IDS_ERROR_COPYFILE_EXPLANATION: return _T("IDS_ERROR_COPYFILE_EXPLANATION"); case IDS_ERROR_COPYFILE_MORE: return _T("IDS_ERROR_COPYFILE_MORE"); case IDS_ERROR_DELETEFILE_TITLE: return _T("IDS_ERROR_DELETEFILE_TITLE"); case IDS_ERROR_DELETEFILE_EXPLANATION: return _T("IDS_ERROR_DELETEFILE_EXPLANATION"); case IDS_ERROR_DELETEFILE_MORE: return _T("IDS_ERROR_DELETEFILE_MORE"); case IDS_ERROR_RUNFILE_TITLE: return _T("IDS_ERROR_RUNFILE_TITLE"); case IDS_ERROR_RUNFILE_EXPLANATION: return _T("IDS_ERROR_RUNFILE_EXPLANATION"); case IDS_ERROR_RUNFILE_MORE: return _T("IDS_ERROR_RUNFILE_MORE"); case IDS_ERROR_CLOSEAPP_TITLE: return _T("IDS_ERROR_CLOSEAPP_TITLE"); case IDS_ERROR_CLOSEAPP_EXPLANATION: return _T("IDS_ERROR_CLOSEAPP_EXPLANATION"); case IDS_ERROR_CLOSEAPP_MORE: return _T("IDS_ERROR_CLOSEAPP_MORE"); case IDS_ERROR_FILECORRUPT_TITLE: return _T("IDS_ERROR_FILECORRUPT_TITLE"); case IDS_ERROR_FILECORRUPT_EXPLANATION: return _T("IDS_ERROR_FILECORRUPT_EXPLANATION"); case IDS_ERROR_FILECORRUPT_MORE: return _T("IDS_ERROR_FILECORRUPT_MORE"); case IDS_ERROR_WRITEFILE_TITLE: return _T("IDS_ERROR_WRITEFILE_TITLE"); case IDS_ERROR_WRITEFILE_EXPLANATION: return _T("IDS_ERROR_WRITEFILE_EXPLANATION"); case IDS_ERROR_WRITEFILE_MORE: return _T("IDS_ERROR_WRITEFILE_MORE"); case IDS_ERROR_UNZIPFILE_TITLE: return _T("IDS_ERROR_UNZIPFILE_TITLE"); case IDS_ERROR_UNZIPFILE_EXPLANATION: return _T("IDS_ERROR_UNZIPFILE_EXPLANATION"); case IDS_ERROR_UNZIPFILE_MORE: return _T("IDS_ERROR_UNZIPFILE_MORE"); case IDS_INFORMATION_TITLE: return _T("IDS_INFORMATION_TITLE"); case IDS_INFORMATION_RESTARTSYSTEM_TITLE: return _T("IDS_INFORMATION_RESTARTSYSTEM_TITLE"); case IDS_INFORMATION_RESTARTSYSTEM_EXPLANATION: return _T("IDS_INFORMATION_RESTARTSYSTEM_EXPLANATION"); case IDS_FULL_FINISH_CREATESHORTCUTS: return _T("IDS_FULL_FINISH_CREATESHORTCUTS"); case IDS_FULL_PROTECTION_TITLE: return _T("IDS_FULL_PROTECTION_TITLE"); case IDS_FULL_PROTECTION_SUBTITLE: return _T("IDS_FULL_PROTECTION_SUBTITLE"); case IDS_FULL_PROTECTION_EXPLANATION: return _T("IDS_FULL_PROTECTION_EXPLANATION"); case IDS_FULL_PROTECTION_CHECKLICENSE: return _T("IDS_FULL_PROTECTION_CHECKLICENSE"); case IDS_FULL_PROTECTION_CHECKFILES: return _T("IDS_FULL_PROTECTION_CHECKFILES"); case IDS_ERROR_PROTECTION_TITLE: return _T("IDS_ERROR_PROTECTION_TITLE"); case IDS_ERROR_PROTECTION_EXPLANATION: return _T("IDS_ERROR_PROTECTION_EXPLANATION"); case IDS_ERROR_PROTECTION_MORE: return _T("IDS_ERROR_PROTECTION_MORE"); case IDS_FULL_PROTECTION_GETLICENSE: return _T("IDS_FULL_PROTECTION_GETLICENSE"); case IDS_ERROR_PROTECTION: return _T("IDS_ERROR_PROTECTION"); case IDS_ACTION_REGISTER: return _T("IDS_ACTION_REGISTER"); case IDS_ACTION_SETFILEATTR: return _T("IDS_ACTION_SETFILEATTR"); case IDS_CONFIRMATION_REGISTER_TITLE: return _T("IDS_CONFIRMATION_REGISTER_TITLE"); case IDS_CONFIRMATION_REGISTER_EXPLANATION: return _T("IDS_CONFIRMATION_REGISTER_EXPLANATION"); case IDS_WARNING_REGISTER: return _T("IDS_WARNING_REGISTER"); case IDS_WARNING_TITLE: return _T("IDS_WARNING_TITLE"); case IDS_WARNING_REGISTER_TITLE: return _T("IDS_WARNING_REGISTER_TITLE"); case IDS_WARNING_REGISTER_EXPLANATION: return _T("IDS_WARNING_REGISTER_EXPLANATION"); case IDS_POPUP_BITMAPS: return _T("IDS_POPUP_BITMAPS"); case IDS_RESTORE_TITLE: return _T("IDS_RESTORE_TITLE"); case IDS_RESTORE_EXPLANATION: return _T("IDS_RESTORE_EXPLANATION"); case IDS_RESTORE_PROGRESS: return _T("IDS_RESTORE_PROGRESS"); case IDS_RESTORE_RESTORE: return _T("IDS_RESTORE_RESTORE"); case IDS_RESTORE_CLOSE: return _T("IDS_RESTORE_CLOSE"); case IDS_PROXY_TITLE: return _T("IDS_PROXY_TITLE"); case IDS_PROXY_DIRECT: return _T("IDS_PROXY_DIRECT"); case IDS_PROXY_AUTODETECT: return _T("IDS_PROXY_AUTODETECT"); case IDS_PROXY_MANUAL: return _T("IDS_PROXY_MANUAL"); case IDS_PROXY_HTTP: return _T("IDS_PROXY_HTTP"); case IDS_PROXY_FTP: return _T("IDS_PROXY_FTP"); case IDS_PROXY_AUTOCONFIGURL: return _T("IDS_PROXY_AUTOCONFIGURL"); case IDS_LOGVIEWER_TITLE: return _T("IDS_LOGVIEWER_TITLE"); case IDS_LOGVIEWER_NOLOG: return _T("IDS_LOGVIEWER_NOLOG"); case IDS_AUTHENTICATION_SAVECREDENTIALS: return _T("IDS_AUTHENTICATION_SAVECREDENTIALS"); case IDS_CLOSEAPPLICATION_TITLE: return _T("IDS_CLOSEAPPLICATION_TITLE"); case IDS_CLOSEAPPLICATION_EXPLANATION: return _T("IDS_CLOSEAPPLICATION_EXPLANATION"); case IDS_CLOSEAPPLICATION_ENDNOW: return _T("IDS_CLOSEAPPLICATION_ENDNOW"); case IDS_CLOSEAPPLICATION_APPLICATION: return _T("IDS_CLOSEAPPLICATION_APPLICATION"); case IDS_CONFIRMATION_CLOSEAPPLICATION_USER_EXPLANATION: return _T("IDS_CONFIRMATION_CLOSEAPPLICATION_USER_EXPLANATION"); default: return _T(""); } return _T(""); }